#pragma once
#include "CTimeline.h"

class CTimelineCollection;

class CTimelineGroup :
	public CTimeline
{

protected: 
	CTimelineGroup(CCoreServices * pCore);
	virtual ~CTimelineGroup();
	XBOOL HasChildren();
	void DetachChildren();
public: 
	static HRESULT Create(CDependencyObject * *, CREATEPARAMETERS *);
	virtual HRESULT SetValue(CDependencyProperty * pdp, CValue * pValue);
	virtual HRESULT AddChild(CTimeline * pChild);
	virtual HRESULT RemoveChild(CTimeline * pChild);
	virtual HRESULT ComputeStateImpl(const XFLOAT * pParentTime, XBOOL isParentInReverse, XFLOAT combinedSpeedRatio, struct IFrameScheduler * pFrameScheduler, XBOOL * pHasNoExternalReferences, XBOOL * pHasIndependentAnimation, XBOOL * pIsInReverse);
	virtual HRESULT OnAddToTimeManager();
	virtual HRESULT OnRemoveFromTimeManager();
protected: 
	virtual HRESULT InitializeIteration(enum ClockState clockStatePrevious);
	virtual HRESULT FinalizeIteration(enum FillBehavior parentFillBehavior);
public: 
	CTimelineCollection * m_pChild;

};
